Szkicownik: Wiązanie prawo Snella |
Lokalizacja w menu |
---|
Szkic → Wiązania szkicownika → Wiązanie refrakcji (prawo Snell'a) |
Środowisko pracy |
Szkicownik |
Domyślny skrót |
K W |
Wprowadzono w wersji |
0.15 |
Zobacz także |
brak |
Narzędzie Wiązanie prawo Snell'a wiąże dwie linie tak, aby były zgodne z prawem załamania światła, gdy przenika ono przez interfejs, w którym spotykają się dwa materiały o różnych współczynnikach załamania. Zobacz Prawo Snella.
Prawo Snell'a
Sekwencja kliknięć jest oznaczona żółtymi strzałkami z liczbami, n1 i n2 pokazują, gdzie znajdują się współczynniki załamania.
Wiązanie może być utworzone przez makropolecenie i z konsoli Pyton za pomocą następującej funkcji:
Sketch.addConstraint(Sketcher.Constraint('SnellsLaw',line1,pointpos1,line2,pointpos2,interface,n2byn1))
gdzie:
Sketch
jest obiektem typu szkicline1
oraz pointpos1
są dwiema liczbami całkowitymi określającymi punkt końcowy linii w środku o współczynniku załamania światła wynoszącym n1. line1
jest indeksem linii w szkicu (wartość zwracana przez Sketch.addGeometry), a pointpos1
powinno wynosić 1 dla punktu początkowego i 2 dla punktu końcowego,line2
oraz pointpos2
to indeksy określające punkt końcowy drugiej linii (w środku „n2”),n2byn1
jest liczbą zmiennoprzecinkową równą stosunkowi współczynników załamania światła n2/n1.Strona Skrypty szkicownika wyjaśnia wartości, których można użyć dla line1
, pointpos1
, line2
, pointpos2
and interface
oraz zawiera dalsze przykłady tworzenia wiązań przy użyciu skryptów języka Python.
Przykład:
import Sketcher
import Part
import FreeCAD
StartPoint = 1
EndPoint = 2
f = App.activeDocument().addObject("Sketcher::SketchObject","Sketch")
# add geometry to the sketch
icir = f.addGeometry(Part.Circle(App.Vector(-547.612366,227.479736,0),App.Vector(0,0,1),68.161979))
iline1 = f.addGeometry(Part.LineSegment(App.Vector(-667.331726,244.127090,0),App.Vector(-604.284241,269.275238,0)))
iline2 = f.addGeometry(Part.LineSegment(App.Vector(-604.284241,269.275238,0),App.Vector(-490.940491,256.878265,0)))
# add constraints
# helper constraints:
f.addConstraint(Sketcher.Constraint('Coincident',iline1,EndPoint,iline2,StartPoint))
f.addConstraint(Sketcher.Constraint('PointOnObject',iline1,EndPoint,icir))
# the Snell's law:
f.addConstraint(Sketcher.Constraint('SnellsLaw',iline1,EndPoint,iline2,StartPoint,icir,1.47))
App.ActiveDocument.recompute()